package abordagem.leitores_e_escritores;

import util.ClasseAuxiliar;
import main.Principal;

/**
 * Escritor da abordagem RW. Para mais informacoes sobre a abordagem RW: {@link Principal}
 * 
 * @author Andreia Rodrigues de Oliveira, Raphael Henrique Monteiro, Regis Hideki Hatori;
 *
 */
public class RWEscritor extends Thread {

	private RWLock db;
	private Principal main;

	/**
	 * Construtor da classe RWEscritor
	 * 
	 * @param db banco da abordagem RW
	 * @param main objeto da classe {@link Principal}
	 */
	public RWEscritor(RWLock db, Principal main) {

		this.db = db;
		this.main = main;
	}

	@Override
	public void run() {

		db.acquireWriteLock();
		int pos = ClasseAuxiliar.posicaoAleatoriaNoBd();

		try {
			
			Thread.sleep(5);
			
		} catch (InterruptedException e) {
			
			e.printStackTrace();
		}

		main.getListaBd().set(pos, "MODIFICADO");
		db.releaseWriteLock();
	}
}
